//
// Created by lfm on 25-4-19.
//

#ifndef LIBRARYSYSTEM_H
#define LIBRARYSYSTEM_H

#include <iostream>
#include "Admin.h"
#include "ReaderManager.h"
#include "BookManager.h"

using namespace std;

// 图书馆系统类
class LibrarySystem
{
public:
    LibrarySystem();
    // 启动图书馆系统
    void start();

private:
    Admin admin;
    ReaderManager readerManager;
    BookManager bookManager;

    // 登录相关
    // 管理员登录
    void adminLogin();
    // 读者登录
    bool readerLogin(Reader *&reader);

    // 管理员菜单
    // 显示管理员菜单
    void menuAdmin();
    // 显示图书管理菜单
    void menuBookManagement();
    // 显示读者管理菜单
    void menuReaderManagement();

    // 读者菜单
    // 显示当前读者的菜单
    void menuReader(Reader &currentReader);

    // 通用输入处理
    // 获取有效输入
    string getValidInput(const string &prompt, int mmin, int mmax);
    // 获取非空字符串输入
    string getNonEmptyString(const string &prompt);
    bool borrowBook(Reader &reader, const std::string &isbn);
    void returnBook(Reader &reader, const std::string &isbn);
    void helpReaderBorrowBook();
    void viewReaderBorrowRecords();
};

#endif // LIBRARYSYSTEM_H